const name = "utils"
function deepClone(obj, hash = new WeakMap()) {
    if (obj == null) return obj; //判断空值
    if (obj instanceof Date) return new Date(obj); //判断日期
    if (obj instanceof RegExp) return new RegExp(obj);
    // 如果是函数或者普通值的话 不需要深拷贝
    if (typeof obj !== "object") return obj;
    // 是对象的话就要进行深拷贝
    if (hash.get(obj)) return hash.get(obj);

    let cloneObj = new obj.constructor();
    hash.set(obj, cloneObj);
    for (let key in obj) {
        if (obj.hasOwnProperty(key)) {
            // 实现一个递归拷贝
            cloneObj[key] = deepClone(obj[key], hash);
        }
    }
    return cloneObj;
}



export {
    name,
    deepClone
}